package com.bizfty.api.apimanager.gateways;

import com.bizfty.api.apimanager.beans.CreateDomainRequest;
import com.bizfty.api.apimanager.beans.CreateDomainResponse;
import com.bizfty.api.apimanager.beans.CreateModelRequest;
import com.bizfty.api.apimanager.beans.CreateModelResponse;
import com.bizfty.api.apimanager.beans.DeleteDomainRequest;
import com.bizfty.api.apimanager.beans.DeleteDomainResponse;
import com.bizfty.api.apimanager.beans.DeleteModelRequest;
import com.bizfty.api.apimanager.beans.DeleteModelResponse;
import com.bizfty.api.apimanager.beans.RtrvDomainListRequest;
import com.bizfty.api.apimanager.beans.RtrvDomainListResponse;
import com.bizfty.api.apimanager.beans.RtrvModelDiagramRequest;
import com.bizfty.api.apimanager.beans.RtrvModelDiagramResponse;
import com.bizfty.api.apimanager.beans.RtrvModelListRequest;
import com.bizfty.api.apimanager.beans.RtrvModelListResponse;
import com.bizfty.api.apimanager.beans.SaveModelDiagramRequest;
import com.bizfty.api.apimanager.beans.SaveModelDiagramResponse;
import com.bizfty.api.apimanager.beans.UpdateDomainRequest;
import com.bizfty.api.apimanager.beans.UpdateDomainResponse;
import com.bizfty.api.apimanager.beans.UpdateModelRequest;
import com.bizfty.api.apimanager.beans.UpdateModelResponse;
import com.bizfty.api.commons.beans.MediaType;
import com.bizfty.api.commons.beans.faults.BusinessException;
import com.bizfty.api.commons.beans.faults.TechnicalException;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.xml.ws.Action;
import javax.xml.ws.FaultAction;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
import javax.xml.ws.soap.MTOM;

@WebService(targetNamespace = "http://gateways.apimanager.api.bizfty.com", name = "ApiMgmt")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
@MTOM
@Path("/")
public interface ApiMgmt {

    /**
     * 创建领域
     */
    @POST
    @Path("/createDomain")
    @Consumes(MediaType.APPLICATION_JSON_VALUE)
    @Produces(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @WebMethod(operationName = "createDomain", action = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/createDomain")
    @WebResult(name = "CreateDomainResponse", partName = "createDomainResponse", targetNamespace = "http://beans.apimanager.api.bizfty.com")
    @RequestWrapper(localName = "createDomain", partName = "createDomainRequestWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.CreateDomainRequestWrapper")
    @ResponseWrapper(localName = "createDomainResponse", partName = "createDomainResponseWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.CreateDomainResponseWrapper")
    @Action(input = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/createDomainRequest", output = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/createDomainResponse", fault = {
        @FaultAction(className = BusinessException.class, value = "http://faults.beans.commons.api.bizfty.com/BusinessException"),
        @FaultAction(className = TechnicalException.class, value = "http://faults.beans.commons.api.bizfty.com/TechnicalException")
    })
    public CreateDomainResponse createDomain(@WebParam(name = "CreateDomainRequest", targetNamespace = "http://beans.apimanager.api.bizfty.com") CreateDomainRequest request) throws BusinessException, TechnicalException;

    /**
     * 删除领域
     */
    @POST
    @Path("/deleteDomain")
    @Consumes(MediaType.APPLICATION_JSON_VALUE)
    @Produces(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @WebMethod(operationName = "deleteDomain", action = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/deleteDomain")
    @WebResult(name = "DeleteDomainResponse", partName = "deleteDomainResponse", targetNamespace = "http://beans.apimanager.api.bizfty.com")
    @RequestWrapper(localName = "deleteDomain", partName = "deleteDomainRequestWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.DeleteDomainRequestWrapper")
    @ResponseWrapper(localName = "deleteDomainResponse", partName = "deleteDomainResponseWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.DeleteDomainResponseWrapper")
    @Action(input = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/deleteDomainRequest", output = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/deleteDomainResponse", fault = {
        @FaultAction(className = BusinessException.class, value = "http://faults.beans.commons.api.bizfty.com/BusinessException"),
        @FaultAction(className = TechnicalException.class, value = "http://faults.beans.commons.api.bizfty.com/TechnicalException")
    })
    public DeleteDomainResponse deleteDomain(@WebParam(name = "DeleteDomainRequest", targetNamespace = "http://beans.apimanager.api.bizfty.com") DeleteDomainRequest request) throws BusinessException, TechnicalException;

    /**
     * 更像领域
     */
    @POST
    @Path("/updateDomain")
    @Consumes(MediaType.APPLICATION_JSON_VALUE)
    @Produces(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @WebMethod(operationName = "updateDomain", action = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/updateDomain")
    @WebResult(name = "UpdateDomainResponse", partName = "updateDomainResponse", targetNamespace = "http://beans.apimanager.api.bizfty.com")
    @RequestWrapper(localName = "updateDomain", partName = "updateDomainRequestWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.UpdateDomainRequestWrapper")
    @ResponseWrapper(localName = "updateDomainResponse", partName = "updateDomainResponseWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.UpdateDomainResponseWrapper")
    @Action(input = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/updateDomainRequest", output = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/updateDomainResponse", fault = {
        @FaultAction(className = BusinessException.class, value = "http://faults.beans.commons.api.bizfty.com/BusinessException"),
        @FaultAction(className = TechnicalException.class, value = "http://faults.beans.commons.api.bizfty.com/TechnicalException")
    })
    public UpdateDomainResponse updateDomain(@WebParam(name = "UpdateDomainRequest", targetNamespace = "http://beans.apimanager.api.bizfty.com") UpdateDomainRequest request) throws BusinessException, TechnicalException;

    /**
     * 获取领域列表
     */
    @POST
    @Path("/rtrvDomainList")
    @Consumes(MediaType.APPLICATION_JSON_VALUE)
    @Produces(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @WebMethod(operationName = "rtrvDomainList", action = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/rtrvDomainList")
    @WebResult(name = "RtrvDomainListResponse", partName = "rtrvDomainListResponse", targetNamespace = "http://beans.apimanager.api.bizfty.com")
    @RequestWrapper(localName = "rtrvDomainList", partName = "rtrvDomainListRequestWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.RtrvDomainListRequestWrapper")
    @ResponseWrapper(localName = "rtrvDomainListResponse", partName = "rtrvDomainListResponseWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.RtrvDomainListResponseWrapper")
    @Action(input = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/rtrvDomainListRequest", output = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/rtrvDomainListResponse", fault = {
        @FaultAction(className = BusinessException.class, value = "http://faults.beans.commons.api.bizfty.com/BusinessException"),
        @FaultAction(className = TechnicalException.class, value = "http://faults.beans.commons.api.bizfty.com/TechnicalException")
    })
    public RtrvDomainListResponse rtrvDomainList(@WebParam(name = "RtrvDomainListRequest", targetNamespace = "http://beans.apimanager.api.bizfty.com") RtrvDomainListRequest request) throws BusinessException, TechnicalException;

    /**
     * 创建模型
     */
    @POST
    @Path("/createModel")
    @Consumes(MediaType.APPLICATION_JSON_VALUE)
    @Produces(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @WebMethod(operationName = "createModel", action = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/createModel")
    @WebResult(name = "CreateModelResponse", partName = "createModelResponse", targetNamespace = "http://beans.apimanager.api.bizfty.com")
    @RequestWrapper(localName = "createModel", partName = "createModelRequestWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.CreateModelRequestWrapper")
    @ResponseWrapper(localName = "createModelResponse", partName = "createModelResponseWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.CreateModelResponseWrapper")
    @Action(input = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/createModelRequest", output = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/createModelResponse", fault = {
        @FaultAction(className = BusinessException.class, value = "http://faults.beans.commons.api.bizfty.com/BusinessException"),
        @FaultAction(className = TechnicalException.class, value = "http://faults.beans.commons.api.bizfty.com/TechnicalException")
    })
    public CreateModelResponse createModel(@WebParam(name = "CreateModelRequest", targetNamespace = "http://beans.apimanager.api.bizfty.com") CreateModelRequest request) throws BusinessException, TechnicalException;

    /**
     * 删除模型
     */
    @POST
    @Path("/deleteModel")
    @Consumes(MediaType.APPLICATION_JSON_VALUE)
    @Produces(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @WebMethod(operationName = "deleteModel", action = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/deleteModel")
    @WebResult(name = "DeleteModelResponse", partName = "deleteModelResponse", targetNamespace = "http://beans.apimanager.api.bizfty.com")
    @RequestWrapper(localName = "deleteModel", partName = "deleteModelRequestWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.DeleteModelRequestWrapper")
    @ResponseWrapper(localName = "deleteModelResponse", partName = "deleteModelResponseWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.DeleteModelResponseWrapper")
    @Action(input = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/deleteModelRequest", output = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/deleteModelResponse", fault = {
        @FaultAction(className = BusinessException.class, value = "http://faults.beans.commons.api.bizfty.com/BusinessException"),
        @FaultAction(className = TechnicalException.class, value = "http://faults.beans.commons.api.bizfty.com/TechnicalException")
    })
    public DeleteModelResponse deleteModel(@WebParam(name = "DeleteModelRequest", targetNamespace = "http://beans.apimanager.api.bizfty.com") DeleteModelRequest request) throws BusinessException, TechnicalException;

    /**
     * 更像模型
     */
    @POST
    @Path("/updateModel")
    @Consumes(MediaType.APPLICATION_JSON_VALUE)
    @Produces(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @WebMethod(operationName = "updateModel", action = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/updateModel")
    @WebResult(name = "UpdateModelResponse", partName = "updateModelResponse", targetNamespace = "http://beans.apimanager.api.bizfty.com")
    @RequestWrapper(localName = "updateModel", partName = "updateModelRequestWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.UpdateModelRequestWrapper")
    @ResponseWrapper(localName = "updateModelResponse", partName = "updateModelResponseWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.UpdateModelResponseWrapper")
    @Action(input = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/updateModelRequest", output = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/updateModelResponse", fault = {
        @FaultAction(className = BusinessException.class, value = "http://faults.beans.commons.api.bizfty.com/BusinessException"),
        @FaultAction(className = TechnicalException.class, value = "http://faults.beans.commons.api.bizfty.com/TechnicalException")
    })
    public UpdateModelResponse updateModel(@WebParam(name = "UpdateModelRequest", targetNamespace = "http://beans.apimanager.api.bizfty.com") UpdateModelRequest request) throws BusinessException, TechnicalException;

    /**
     * 获取模型列表
     */
    @POST
    @Path("/rtrvModelList")
    @Consumes(MediaType.APPLICATION_JSON_VALUE)
    @Produces(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @WebMethod(operationName = "rtrvModelList", action = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/rtrvModelList")
    @WebResult(name = "RtrvModelListResponse", partName = "rtrvModelListResponse", targetNamespace = "http://beans.apimanager.api.bizfty.com")
    @RequestWrapper(localName = "rtrvModelList", partName = "rtrvModelListRequestWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.RtrvModelListRequestWrapper")
    @ResponseWrapper(localName = "rtrvModelListResponse", partName = "rtrvModelListResponseWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.RtrvModelListResponseWrapper")
    @Action(input = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/rtrvModelListRequest", output = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/rtrvModelListResponse", fault = {
        @FaultAction(className = BusinessException.class, value = "http://faults.beans.commons.api.bizfty.com/BusinessException"),
        @FaultAction(className = TechnicalException.class, value = "http://faults.beans.commons.api.bizfty.com/TechnicalException")
    })
    public RtrvModelListResponse rtrvModelList(@WebParam(name = "RtrvModelListRequest", targetNamespace = "http://beans.apimanager.api.bizfty.com") RtrvModelListRequest request) throws BusinessException, TechnicalException;

    /**
     * 保存模型，通常情况是整个模型图
     */
    @POST
    @Path("/saveModelDiagram")
    @Consumes(MediaType.APPLICATION_JSON_VALUE)
    @Produces(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @WebMethod(operationName = "saveModelDiagram", action = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/saveModelDiagram")
    @WebResult(name = "SaveModelDiagramResponse", partName = "saveModelDiagramResponse", targetNamespace = "http://beans.apimanager.api.bizfty.com")
    @RequestWrapper(localName = "saveModelDiagram", partName = "saveModelDiagramRequestWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.SaveModelDiagramRequestWrapper")
    @ResponseWrapper(localName = "saveModelDiagramResponse", partName = "saveModelDiagramResponseWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.SaveModelDiagramResponseWrapper")
    @Action(input = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/saveModelDiagramRequest", output = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/saveModelDiagramResponse", fault = {
        @FaultAction(className = BusinessException.class, value = "http://faults.beans.commons.api.bizfty.com/BusinessException"),
        @FaultAction(className = TechnicalException.class, value = "http://faults.beans.commons.api.bizfty.com/TechnicalException")
    })
    public SaveModelDiagramResponse saveModelDiagram(@WebParam(name = "SaveModelDiagramRequest", targetNamespace = "http://beans.apimanager.api.bizfty.com") SaveModelDiagramRequest request) throws BusinessException, TechnicalException;

    /**
     * 获取模型，通常情况是整个模型图
     */
    @POST
    @Path("/rtrvModelDiagram")
    @Consumes(MediaType.APPLICATION_JSON_VALUE)
    @Produces(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @WebMethod(operationName = "rtrvModelDiagram", action = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/rtrvModelDiagram")
    @WebResult(name = "RtrvModelDiagramResponse", partName = "rtrvModelDiagramResponse", targetNamespace = "http://beans.apimanager.api.bizfty.com")
    @RequestWrapper(localName = "rtrvModelDiagram", partName = "rtrvModelDiagramRequestWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.RtrvModelDiagramRequestWrapper")
    @ResponseWrapper(localName = "rtrvModelDiagramResponse", partName = "rtrvModelDiagramResponseWrapper", targetNamespace = "http://beans.apimanager.api.bizfty.com", className = "com.bizfty.api.apimanager.beans.RtrvModelDiagramResponseWrapper")
    @Action(input = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/rtrvModelDiagramRequest", output = "http://gateways.apimanager.api.bizfty.com/ApiMgmt/rtrvModelDiagramResponse", fault = {
        @FaultAction(className = BusinessException.class, value = "http://faults.beans.commons.api.bizfty.com/BusinessException"),
        @FaultAction(className = TechnicalException.class, value = "http://faults.beans.commons.api.bizfty.com/TechnicalException")
    })
    public RtrvModelDiagramResponse rtrvModelDiagram(@WebParam(name = "RtrvModelDiagramRequest", targetNamespace = "http://beans.apimanager.api.bizfty.com") RtrvModelDiagramRequest request) throws BusinessException, TechnicalException;

}
